#pragma once

#include <windows.h>
#include <map>
#include <vector>
#include <string>

struct r_ProcessInfo
{
	DWORD mdw_ProcessId;
	std::wstring ms_Name;
	bool mb_Handled;
	HMODULE mh_InjectedDllHandle;
};

class k_ProcessManager
{
public:
	k_ProcessManager();
	~k_ProcessManager();

	void CheckProcesses();
	std::vector<r_ProcessInfo*> GetUnhandledProcesses() const;
	std::vector<r_ProcessInfo*> GetHandledProcesses() const;
	

protected:
	r_ProcessInfo* get_ProcessInfo(DWORD adw_ProcessId);
	bool IsProcessInsideList(const std::vector<r_ProcessInfo*>& ak_ProcessStatusList, r_ProcessInfo* ar_Process_);

private:
	std::vector<r_ProcessInfo*> mk_ProcessStatusList;
};